1.21. Языки запросов
Языки запросов
Отвлечёмся от поисковиков и акцентируем на запросах. В поиске выделяют термины запрос (способ выражения информационных потребностей) и объект запроса (сущность, хранимая в базе системы поиска).
Язык запросов – специфический язык, на котором выполняется запрос к базам данных (SQL) и информационно-поисковым системам (поисковикам).
Зачем нужен язык запросов? Вы можете, конечно, перебрать всю таблицу ручками и найти нужную позицию, допустим, запись в базе данных, даже если записей миллиарды. Но определённо – извлекать, изменять или анализировать данные без ручного перебора заметно быстрее.
Языки запросов бывают нескольких видов:
- языки для реляционных БД (таблиц);
- языки XML и JSON;
- языки графовых БД;
- языки для полнотекстового поиска.
SQL мы изучим отдельно, когда будем рассматривать базы данных, но этот язык (Structured Query Language) – стандарт для реляционных СУБД.
SQL-подобные языки отличаются некоторыми особенностиями:
| Заголовок слева | Заголовок по центру |
|---|---|
| SQL-подобный язык | Применение |
| MDX | Анализ многомерных данных (OLAP) |
| CQL | Запросы к Cassandra (NoSQL) |
| N1QL | JSON-документы в Couchbase |
| LINQ | Запросы в .NET |
Но на текущий момент углубляться нам в них не нужно.
Для поиска элементов в XML и JSON используют особые языки:
- XPath – язык поиска элементов в XML-документе, который позволяет указать путь к элементу или атрибуту и получить значение;
- XQuery – расширенный язык для работы с XML (аналог SQL для XML);
- JSONPath – аналог XPath для JSON.
С этими языками можно столкнуться, когда речь идёт о работе с форматами обмена, когда требуется получать определённое значение, вычислять и выполнять маппинг данных.
★ Языки для графовых БД – SPARQL, Gremlin, Cypher применяются при работе с СУБД (к примеру Neo4j), и используются в качестве поиска элементов среди узлов и связей, к примеру, при работе с моделями социальных графов (социальных сетей), в биоинформатике или для семантической паутины. Это узкопрофильная часть.
Полнотекстовый поиск, к примеру, Elasticseartch и OpenSearch, Solr, использует Elasticsearch Query DSL и Lucene Syntax. Это свой язык для выполнения поиска.
★ Elasticsearch – написанная на Java поисковая система, использующая библиотеку Lucene, и позволяющая выполнять поиск на своих сервисах, к примеру, GitHub или Netflix. Это распределённая поисковая система, предназначенная для хранения, поиска и анализа больших объемов данных в реальном времени. Она поддерживает текстовый поиск, аналитические запросы и хранение структурированных данных.
★ Solr – другая поисковая платформа, которая тоже основана на Lucene, написана на Java и используется для поиска – к примеру. Разработчиком Solr, как и Lucene, является Apache Software Foundation.
★ Lucene – свободная библиотека для высокопроизводительного полнотекстового поиска, которая используется в разных языках:
| Язык / фреймворк | Порт Lucene |
|---|---|
| Си | Lucene4c |
| C++ | CLucene |
| C# | Lucene.Net |
| Node.js, Go, Delphi | MUTIS |
| Ruby | Ferret, RubyLucene |
| PHP | встроен в Zend |
| Python | PyLucene |
Язык запросов зависит от типа данных и системы, где они хранятся, SQL для реляционных, SQL-подобные для NoSQL, Xpath для XML, SPARQL для семантики, DSL для Elasticsearch. Но давайте остановим поток теории и вернёмся к оттачиванию навыков.